#include<iostream>
#include<ctime>
using namespace std;
void dfs_noreturn(int n,int k,int m,int &ret)
{
    for(int i=m;i<=n;i++)
    {
        if(k<0) return;
        if(n<i) return;
        if(i*k>n) return;
        if(n==i&&k==1)
        {
            ret++;
            return;
        }
        dfs_noreturn(n-i,k-1,i,ret);
    }
}

int dfs_holdreturn1(int n,int k,int m)
{
    int ret=0;
    for(int i=m;i<=n;i++)
    {
        if(n==i&&k==1) return 1;
        if(k==0) return 0;
        if(k*m>n) return 0;
        ret+=dfs_holdreturn1(n-i,k-1,i);
    }
    return ret;
}
int dfs_holdreturn2(int n,int k,int m)
{
    int ret=0;
    for(int i=m;i<=n;i++)
    {
        if(n==i&&k==1) return 1;
        if(k<1) return 0;
        ret+=dfs_holdreturn2(n-i,k-1,i);
    }
    return ret;
}
int main()
{
    int n,k;
    cin>>n>>k;
    // int ret=0;
    // dfs_noreturn(n,k,1,ret);
    // cout<<ret<<endl;
    cout<<dfs_holdreturn1(n,k,1)<<endl;
}